import { BasicColumn } from '/@/components/Table';
import { FormSchema } from '/@/components/Table';
import { h } from 'vue';
import { Tag } from 'ant-design-vue';
import { RouterLink } from 'vue-router';
import { getDepts as getAllDept } from '/@/api/org/dept';
import { getAllList as getAllUser } from '/@/api/privilege/account';


// 表格定义
export const columns: BasicColumn[] = [
  {
    title: '合同编号',
    dataIndex: 'formNo',
    customRender: ({ record, text }) => {
      return h(RouterLink, { to: `/report/project/view/${record.id}` }, () => text);
    },
  },
  {
    title: '摘要',
    dataIndex: 'summary',
    customRender: ({ record }) => {
      return record.work ? record.work.summary : '';
    },
  },
  {
    title: '发起人',
    dataIndex: 'operatorName',
    customRender: ({ record }) => {
      if (record.work) {
        const color = 'green';
        const text = record.work.operatorName;
        return h(Tag, { color: color }, () => text)
      }
      return '';
    },
  },
  {
    title: '发起时间',
    dataIndex: 'work.startTime',
    customRender: ({ record }) => {
      return record.work ? record.work.startTime : '';
    },
  },
  {
    title: '完成时间',
    dataIndex: 'updateTime',
    customRender: ({ record }) => {
      return record.projectStatus == 0 ? '' : record.updateTime;
    },
  },
  {
    title: '项目状态',
    dataIndex: 'statusName',
    customRender: ({ record }) => {
      if (record.work) {
        let color = 'green';
        let text = '进行中'
        if (record.projectStatus == -1) {
          color = 'red';
          text = '已终止'
        }
        if (record.projectStatus == 1) {
          color = 'blue';
          text = '已完成'
        }
        return h(Tag, { color: color }, () => text);
      }
      return ''
    },
  }
];

/**
显示当前项目状态，不同状态做颜色区分。
该项目相关的归档流程提交后，状态为已完成；该项目执行终止操作后，状态为已终止。
进行中的项目还需显示当前节点名称：
（1）委托检测、年度委托检测节点（关键部分）：合同登记、派工单、采样、收样、实验、交付、结算、归档；
（2）来样检测节点（关键部分）：合同登记、派工单、收样、实验、交付、结算、归档；
（3）职业卫生、验收节点（关键部分）：合同登记、派工单、场调、采样、收样、实验、报告编制、公示、交付、结算、归档；
（4）环境（安全）应急预案、排污业务、生态环境统计、标准化、安全咨询、其他节点（关键部分）：合同登记、派工单、报告编制、交付、结算、归档；
（5）安全托管、环保管家节点（关键部分）：合同登记、派工单、现场服务、结算、归档。
如果有多个委托业务类型则不同类型的状态用反斜杠隔开，顺序跟委托业务类型对应。
对于多次服务项目，如果多次服务的节点未全部结束，显示最新的进行中的服务所处的节点，并标注X/Y，其中X为当前所属服务频次，Y为总服务频次。如果上一次服务还有未结束的节点，则也参照最新的服务显示出来。最多显示两次服务的状态，中间用逗号隔开。
 * */

export const searchFormSchema: FormSchema[] = [
  {
    field: 'projectStatus',
    label: '项目状态',
    component: 'Select',
    colProps: {
      span: 8,
    },
    componentProps: {
      options: [
        {
          label: '全部',
          value: '',
          key: '',
        },
        {
          label: '进行中',
          value: 0,
          key: 0,
        },
        {
          label: '已完成',
          value: 1,
          key: 1,
        },
        {
          label: '已终止',
          value: -1,
          key: -1,
        },
      ],
    },
  },
  {
    field: 'deptId',
    label: '部门',
    component: 'ApiSelect',
    colProps: {
      span: 8,
    },
    componentProps: {
      api: getAllDept,
      showSearch: true,
      resultField: 'data',
      labelField: 'name',
      valueField: 'id',
    }
  },
  {
    field: 'projectOperator',
    label: '发起人',
    component: 'ApiSelect',
    colProps: {
      span: 8,
    },
    componentProps: {
      api: getAllUser,
      showSearch: true,
      params: {},
      labelField: 'realName',
      valueField: 'id',
    }
  },
  {
    field: 'queryBegin',
    label: '发起时间',
    component: 'DatePicker',
    colProps: {
      span: 8,
    },
  },
  {
    field: 'queryEnd',
    label: '完成时间',
    component: 'DatePicker',
    colProps: {
      span: 8,
    },
  },
  {
    field: 'keyword',
    label: '关键字',
    component: 'Input',
    colProps: {
      span: 8,
    },
    componentProps: {
      placeholder: '请输入合同编号',
    }
  },
];



